<?xml version='1.0'?>
<!--
  Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.

  The MySQL Connector/J is licensed under the terms of the GPLv2
  <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most MySQL Connectors.
  There are special exceptions to the terms and conditions of the GPLv2 as it is applied to
  this software, see the FLOSS License Exception
  <http://www.mysql.com/about/legal/licensing/foss-exception.html>.

  This program is free software; you can redistribute it and/or modify it under the terms
  of the GNU General Public License as published by the Free Software Foundation; version 2
  of the License.

  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  See the GNU General Public License for more details.

  You should have received a copy of the GNU General Public License along with this
  program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth
  Floor, Boston, MA 02110-1301  USA
  
-->

<!-- version $Id$ -->

<project name="MySQL Connector/J" default="dist" basedir=".">
	<!-- If build.properties exists, import it -->
	<property file="build.properties"/>

	<property name="major_version" value="5"/>
	<property name="minor_version" value="1"/>
	<property name="subminor_version" value="18"/>
	<property name="version_status" value=""/>

	<property name="version" value="${major_version}.${minor_version}.${subminor_version}${version_status}"/>
	<property name="prodName" value="mysql-connector-java"/>
	<property name="snapshot.version" value="-SNAPSHOT" />
	<property name="extra.version" value=""/>
	<property name="full.version" value="${version}${extra.version}${snapshot.version}"/>
	<property name="fullProdName" value="${prodName}-${full.version}"/>
	<property name="sourceDir" value="./src"/>
	<property name="buildDir" value="./build"/>
	<property name="distDir" value="./dist"/>
	<property name="junit.results" value="${buildDir}/junit"/>
	<property name="debug.enable" value="on" />
	
	

	<!-- Send class files to correct location if running in eclipse -->

	<condition property="compiler.output" value="bin" else="${buildDir}/${fullProdName}">
		<or>
			<isset property="eclipse.running" />
			<isset property="eclipse.pdebuild.home" />
			<contains string="${ant.home}" substring="plugins" />
		</or>
	</condition>

	<echo>Compiling class files to ${compiler.output}...</echo>

	<!-- 
			The following properties are needed for finding JDK6, set to the defaults
			for my development environment, but can be passed on the command line
			to ant via -D switches
	-->

	<property name="com.mysql.jdbc.java6.java"  value="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin/java" />
	<property name="com.mysql.jdbc.java6.javac" value="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin/javac" />
	<property name="com.mysql.jdbc.java6.rtjar" value="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Classes/classes.jar" />

	<!-- 
			The following property allows Windows to run JUnit tests without forking,
			which causes problems due to large classpath arguments added by Ant.
	-->

	<property name="com.mysql.jdbc.junit.fork"  value="on" />

	<!-- 
	     The following property is needed for building the docs. It's
	     set to the defaults for my development environment, but can be passed
	     on the command line to ant via -D switches. 
	-->

	<property name="com.mysql.jdbc.docs.sourceDir" value="/home/mmatthew/work/docs/prebuilt"/>

	<taskdef resource="net/sf/antcontrib/antlib.xml">
		<classpath>
			<pathelement location="${sourceDir}/lib/ant-contrib.jar"/>
		</classpath>
	</taskdef>

	<path id="built.driver.only.classpath">
		<pathelement location="${buildDir}/${fullProdName}" />
	</path>

	<path id="project.build.classpath">
		<fileset dir="${buildDir}/${fullProdName}/lib-nodist">
			<include name="**/*.jar"/>
		</fileset>

		<fileset dir="${buildDir}/${fullProdName}/lib">
			<include name="**/*.jar"/>
		</fileset>

		<pathelement location="${buildDir}/${fullProdName}" />
	</path>

	<target name="-compiler-check">
		<if>
			<and>
				<not>
					<or>
						<equals arg1="${ant.java.version}" arg2="1.4" />
						<equals arg1="${ant.java.version}" arg2="1.5" />
					</or>
				</not>
				<or>
					<not>
						<available file="${com.mysql.jdbc.java6.javac}" />
					</not>
					<not>
						<available file="${com.mysql.jdbc.java6.rtjar}" />
					</not>
				</or>
			</and>
			<then>
				<echo>This version of MySQL Connector/J requires a compiler Java-1.5 to be used, set your JAVA_HOME property to point to one of these versions of the JDK.
							
Compiling this version also requires Java-6 for compiling the JDBC-4.0 implementation, please set the full path to the javac executable with the property &quot;com.mysql.jdbc.java6.javac&quot;
and the full path to the rt.jar from Java-6 with the property &quot;com.mysql.jdbc.java6.rtjar&quot;.
						</echo>
				<fail/>
			</then>
		</if>
	</target>

	<target name="init" depends="-compiler-check, -init-copy, -init-no-crypto">
		<!-- We need the following for source distributions as there we
             can't dynamically alter the classpath, and not having this
		     directory present causes the build to fail -->

		<mkdir dir="${buildDir}/${fullProdName}/lib-nodist" />

		<available file="${com.mysql.jdbc.docs.sourceDir}" property="com.mysql.jdbc.docs.sourcesPresent" />

		<available classname="com.mchange.v2.c3p0.QueryConnectionTester" 
			classpathref="project.build.classpath" 
			property="com.mysql.jdbc.c3p0Present" />

		<available classname="org.apache.log4j.Logger" 
			classpathref="project.build.classpath" 
			property="com.mysql.jdbc.log4jPresent" />

		<available classname="org.jboss.resource.adapter.jdbc.ValidConnectionChecker" 
			classpathref="project.build.classpath" 
			property="com.mysql.jdbc.jbossPresent" />
	</target>

	<target name="-init-copy" depends="clean">
		<tstamp/>

		<filter token="VERSION" value="${version}"/>

		<mkdir dir="${buildDir}" />

		<exec dir="." executable="cmd" osfamily="windows" 
			output="${buildDir}/bzr.properties" failonerror="false" 
			failifexecutionfails="false">
			<arg line="/c bzr version-info" />
		</exec>

		<exec executable="bzr" osfamily="unix" 
			output="${buildDir}/bzr.properties" failonerror="false" 
			failifexecutionfails="false">
			<arg value="version-info" />
		</exec>

		<property prefix="bzr" file="${buildDir}/bzr.properties" />

		<filterset id="versionFilterset">
			<filter token="MYSQL_CJ_MAJOR_VERSION" value="${major_version}"/>
			<filter token="MYSQL_CJ_MINOR_VERSION" value="${minor_version}"/>
			<filter token="MYSQL_CJ_SUBMINOR_VERSION" value="${subminor_version}"/>
			<filter token="MYSQL_CJ_VERSION_STATUS" value="${version_status}"/>
			<filter token="MYSQL_CJ_VERSION" value="${version}"/>
			<filter token="MYSQL_CJ_REVISION" value="${bzr.revision-id}" />
			<filter token="MYSQL_CJ_FULL_PROD_NAME" value="${fullProdName}"/>
		</filterset>
		
		<copy todir="${buildDir}/${fullProdName}" filtering="true">
			<fileset dir="${sourceDir}/" excludes="**/CVS">
				<patternset id="classjar" >
					<exclude name="**/*.class*"/>
					<exclude name="**/*.jar"/>
				</patternset>
			</fileset>

			<filterset refid="versionFilterset" />
		</copy>

		<copy todir="${buildDir}/${fullProdName}" filtering="false">
			<fileset dir="${sourceDir}" excludes="**/CVS">
				<patternset id="dojar" >
					<include name="**/*.jar*"/>
				</patternset>
			</fileset>
		</copy>
	</target>

	<target name="-init-no-crypto" depends="-init-copy" if="com.mysql.jdbc.noCryptoBuild">
		<copy file="${sourceDir}/lib-nodist/ExportControlledNoCrypto.notjava"
			toFile="${buildDir}/${fullProdName}/com/mysql/jdbc/ExportControlled.java"
			overwrite="true"/>
	</target>

	<!-- 
		This is the target we use to make MySQL AB GPL-licensed and binaries 
		as well as commercially-licensed binaries that include source files.
	-->

	<target name="full-package" description="Builds driver, binary .jar file, docs and packages (.zip, .tar.gz) suitable for distribution that _do_ contain sources" 
		depends="full-dist, -make-packages, -create-archives"/>

	<!-- This is the target we use to make MySQL AB Commercially-licensed binaries -->

	<target name="full-package-no-sources" description="Builds driver, binary .jar file, docs and packages (.zip, .tar.gz) suitable for distribution that do _not_ contain sources"
			depends="full-dist, -make-packages, -remove-sources, -create-archives"/>

	<!-- No trace build until we figure out what's going on with iajc on our
         production build box 
	<target name="full-dist" description="Builds driver, binary .jar file and docs, basically a distribution 'image'"
			depends="-dist-trace, dist, -bundle-docs"/>
			-->


	<target name="full-dist" description="Builds driver, binary .jar file and docs, basically a distribution 'image'"
			depends="dist, -bundle-docs"/>

	<target name="package" depends="dist, -make-packages, -create-archives"/>

	<target name="-remove-sources">
		<echo>Removing sources from ${distDir}/toArchive</echo>
		<delete>
			<fileset dir="${distDir}/toArchive">
				<include name="**/*.java"/>
			</fileset>
		</delete>

		<delete dir="${distDir}/toArchive/${fullProdName}/src"/>
	</target>

	<target name="-create-archives" depends="-make-packages">
		<tar destfile="${distDir}/${fullProdName}.tar.gz"
			compression="gzip" longfile="gnu">
			<tarfileset dir="${toPackage}">
				<patternset refid="non.test.sources" />
			</tarfileset>
		</tar>

		<checksum file="${distDir}/${fullProdName}.tar.gz" forceOverwrite="yes" fileext=".md5"/>

		<delete file="${distDir}/${fullProdName}.zip"/>

		<zip zipfile="${distDir}/${fullProdName}.zip">
			<fileset dir="${toPackage}">
				<patternset refid="non.test.sources" />
			</fileset>
		</zip>

		<checksum file="${distDir}/${fullProdName}.zip" forceOverwrite="yes" fileext=".md5"/>

		<if>
			<isset property="com.mysql.jdbc.commercialBuild"/>
			<then>
				<echo message="Not building maven bundle for commercial build" />
			</then>
			<else>
				<!-- Build a Maven bundle for upload to their repository -->

				<checksum file="${distDir}/${fullProdName}.zip" forceOverwrite="yes" fileext=".md5"/>

				<tempfile destdir="${buildDir}" prefix="maven-bundle-" property="mavenUploadDir" />

				<mkdir dir="${mavenUploadDir}" />

				<copy file="${buildDir}/${fullProdName}/${fullProdName}-bin.jar"
				  	toFile="${mavenUploadDir}/${fullProdName}.jar" />

				<copy file="${buildDir}/${fullProdName}/doc/sources/pom.xml"
					toDir="${mavenUploadDir}" filtering="true">
				</copy>

				<copy file="./COPYING"
					toDir="${mavenUploadDir}" />

				<jar jarfile="${distDir}/${fullProdName}.bundle.jar" 
							basedir="${mavenUploadDir}" />
			</else>
		</if>
	</target>

	<target name="-make-packages" depends="dist">
		<property name="toPackage" value="${distDir}/toArchive"/>
		<property name="packageDest" value = "${toPackage}/${fullProdName}"/>

		<delete dir="${toPackage}" />
		<mkdir dir="${toPackage}"/>
		<mkdir dir="${packageDest}"/>

		<delete file="${distDir}/${fullProdName}.tar.gz"/>

		<patternset id="non.test.sources" >
			<exclude name="**/*.nb*"/>
			<exclude name="**/*.bak"/>
			<exclude name="**/*.*~"/>
			<exclude name="**/lib-nodist/*"/>
			<exclude name="**/lib-coverage/*"/>
			<exclude name="**/clover/*"/>
			<exclude name="**/checkstyle/*"/>
			<exclude name="**/.*"/>
		</patternset>

		<copy todir="${packageDest}">
			<fileset dir="${buildDir}/${fullProdName}"
				includes="debug/*, docs/**, *.jar" excludes="docs/sources">
				<patternset refid="non.test.sources"/>
			</fileset>

			<fileset dir="." includes="src/com/**, src/doc/**, src/lib/*, src/org/**, src/testsuite/**, build.xml, CHANGES, COPYING">
				<patternset refid="non.test.sources"/>
			</fileset>
		</copy>

		<!-- Fix CRLF for various platforms -->
		<if>
			<isset property="com.mysql.jdbc.commercialBuild"/>
			<then>
				<copy file="${sourceDir}/lib-nodist/README-commercial" tofile="${packageDest}/README.txt" filtering="true">
					<filterset refid="versionFilterset" />
				</copy>
				<copy file="${packageDest}/README.txt" tofile="${packageDest}/README" overwrite="true" />
			</then>
			<else>
				<copy file="${basedir}/README" tofile="${packageDest}/README.txt" filtering="true">
					<filterset refid="versionFilterset" />
				</copy>
				<copy file="${packageDest}/README.txt" tofile="${packageDest}/README" overwrite="true" />
			</else>
		</if>

		<!-- For Windows-y platforms -->

		<fixcrlf srcdir="${packageDest}"
			tab="remove" tablength="8"
			eol="crlf" includes="**/README.txt"/>

		<!-- For Unix-y platforms -->

		<fixcrlf srcdir="${packageDest}"
					tab="remove" tablength="8"
					eol="lf" includes="**/README"/>

		<if>
			<isset property="com.mysql.jdbc.commercialBuild"/>
			<then>
				<delete file="${packageDest}/COPYING"/>
                                <copy file="${sourceDir}/lib-nodist/LICENSE.mysql" toDir="${packageDest}"/>

				<replaceregexp 
					match="The MySQL Connector.*1301.[^replaceregexp]*USA"
					replace=""
					flags="s">
					<fileset dir="${packageDest}" includes="**/*"/>
				</replaceregexp>
			</then>
		</if>
	</target>

	<target name="dist" depends="init, compile">

		<delete file="${buildDir}/${fullProdName}-bin.jar" />
		<delete file="${distDir}/${fullProdName}.jar" />

		<mkdir dir="${distDir}" />
		<mkdir dir="${buildDir}/META-INF" />

		<!-- JDBC-4.0 support of service provider mechanism -->

		<mkdir dir="${buildDir}/${fullProdName}/META-INF/services/" />
		<echo file="${buildDir}/${fullProdName}/META-INF/services/java.sql.Driver"
			message="com.mysql.jdbc.Driver" />

		<property name="osgid-version" value="${major_version}.${minor_version}.${subminor_version}"/>

		<property name="jee-imports" value="javax.naming,javax.naming.spi,javax.sql,javax.transaction.xa;version=&quot;[1.0.1, 2.0.0)&quot;;resolution:=optional" />
		<property name="crypto-imports" value="javax.net,javax.net.ssl;version=&quot;[1.0.1, 2.0.0)&quot;;resolution:=optional" />
		<property name="jdbc4-imports" value="javax.xml.parsers, javax.xml.stream,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stax,javax.xml.transform.stream,org.w3c.dom,org.xml.sax,org.xml.sax.helpers;resolution:=optional" />
		<property name="integration-imports" value="com.mchange.v2.c3p0;version=&quot;[0.9.1.2, 1.0.0)&quot;;resolution:=optional,org.jboss.resource.adapter.jdbc;resolution:=optional,org.jboss.resource.adapter.jdbc.vendor;resolution:=optional" />

		<property name="driver-exports" value="com.mysql.jdbc;version=&quot;${osgid-version}&quot;;uses:=&quot;com.mysql.jdbc.log,javax.naming,javax.net.ssl,javax.xml.transform,org.xml.sax&quot;" />
		<property name="jee-exports" value="com.mysql.jdbc.jdbc2.optional;version=&quot;${osgid-version}&quot;;uses:=&quot;com.mysql.jdbc,com.mysql.jdbc.log,javax.naming,javax.sql,javax.transaction.xa&quot;" />
		<property name="logging-exports" value="com.mysql.jdbc.log;version=&quot;${osgid-version}&quot;" />
		<property name="profiling-exports" value="com.mysql.jdbc.profiler;version=&quot;${osgid-version}&quot;;uses:=&quot;com.mysql.jdbc&quot;" />
		<property name="util-exports" value="com.mysql.jdbc.util;version=&quot;${osgid-version}&quot;;uses:=&quot;com.mysql.jdbc.log&quot;" />
		<property name="exceptions-exports" value="com.mysql.jdbc.exceptions;version=&quot;${osgid-version}&quot;" />
		<property name="jdbc4-exceptions-exports" value="com.mysql.jdbc.exceptions.jdbc4;version=&quot;${osgid-version}&quot;;uses:=&quot;com.mysql.jdbc&quot;" />

		<property name="interceptors-exports" value="com.mysql.jdbc.interceptors;version=&quot;${osgid-version}&quot;;uses:=&quot;com.mysql.jdbc&quot;" />
		<property name="integration-exports" value="com.mysql.jdbc.integration.c3p0;version=&quot;${osgid-version}&quot;,com.mysql.jdbc.integration.jboss;version=&quot;${osgid-version}&quot;" />
		<property name="configs-exports" value="com.mysql.jdbc.configs;version=&quot;${osgid-version}&quot;" />
		<property name="legacy-exports" value="org.gjt.mm.mysql;version=&quot;${osgid-version}&quot;" />

		<manifest file="${buildDir}/${fullProdName}/META-INF/MANIFEST.MF">
			<attribute name="Built-By" value="${user.name}" />

			<section name="common">
				<attribute name="Specification-Title" value="JDBC" />
				<attribute name="Specification-Version" value="4.0" />
				<attribute name="Specification-Vendor" value="Sun Microsystems Inc." />
				<attribute name="Implementation-Title" value="MySQL Connector/J" />
				<attribute name="Implementation-Version" value="${full.version}" />
				<attribute name="Implementation-Vendor-Id" value="com.mysql" />
				<attribute name="Implementation-Vendor" value="Oracle" />
			</section>

			<!-- OSGi -->

			<attribute name="Bundle-Vendor" value="Sun Microsystems Inc." />
			<attribute name="Bundle-Classpath" value="." />
			<attribute name="Bundle-Version" value="${osgid-version}" />
			<attribute name="Bundle-Name" value="Sun Microsystems' JDBC Driver for MySQL" />
			<attribute name="Bundle-ManifestVersion" value="2" />
			<attribute name="Bundle-SymbolicName" value="com.mysql.jdbc" />
			<attribute name="Export-Package" value="${driver-exports},${jee-exports},${logging-exports},${profiling-exports},${util-exports},${exceptions-exports},${jdbc4-exceptions-exports},${interceptors-exports},${integration-exports},${configs-exports},${legacy-exports}" />
			<attribute name="Import-Package" value="${crypto-imports},${jdbc4-imports},${jee-imports},${integration-imports}" />
		</manifest>

		<jar jarfile="${buildDir}/${fullProdName}/${fullProdName}-bin.jar" 
			basedir="${buildDir}/${fullProdName}" 
			includes="**/*.class,**/*.properties*,COPYING,README,META-INF/**" 
			excludes="testsuite/**" 
			index="true" 
			manifest="${buildDir}/${fullProdName}/META-INF/MANIFEST.MF"/>
	</target>

	<target name="-bundle-docs" depends="init">
		<copy file="${com.mysql.jdbc.docs.sourceDir}/en/html/connector-j.html"
		  	todir="${buildDir}/${fullProdName}/docs"
		  	failonerror="false"/>
		<copy file="${com.mysql.jdbc.docs.sourceDir}/en/pdf/connector-j.pdf"
			todir="${buildDir}/${fullProdName}/docs"
			failonerror="false"/>
		<copy file="${com.mysql.jdbc.docs.sourceDir}/en/txt/connector-j.txt"
			tofile="${buildDir}/${fullProdName}/docs/README.txt"
			failonerror="false"/>
		<copy todir="${buildDir}/${fullProdName}/docs/release-test-output" failonerror="false">
			<fileset dir="${com.mysql.jdbc.docs.sourceDir}/release-test-output" excludes="**/CVS">
			</fileset>
		</copy>
	</target>

	<target name="test-all-multi" depends="compile">
		<delete dir="${buildDir}/junit" />
		<antcall target="test-multijvm" />
		<antcall target="test-compliance-multijvm" />

		<fail message="Tests failed. Check logs and/or reports in ${buildDir}/junit." 
			if="tests.compliance.failed"/>
	</target>

	<!-- Runs compliance testsuite against multiple JVMs and server configs -->

	<target name="test-multijvm" depends="compile">
		<for list="1,2,3,4,5,6,7,8" param="jvm.number">
			<sequential>
				<if>
					<isset property="com.mysql.jdbc.testsuite.jvm.@{jvm.number}"/>
					<then>
						<for list="1,2,3,4,5,6,7,8" param="url.number">
							<sequential>
								<if>
									<isset property="com.mysql.jdbc.testsuite.url.@{url.number}"/>
									<then>
										<make-output-hier 
										jdbcUrl="${com.mysql.jdbc.testsuite.url.@{url.number}}" 
										junitOutput="${junit.results}" 
										jvm="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}" 
										unitOrCompliance="unit" />

										<property name="test.multi.junitOut.@{url.number}" value="eraseMe" />
										<var name="test.multi.junitOut.@{url.number}" unset="true" />

										<loadfile srcfile="${junit.results}/hier" 
										property="test.multi.junitOut.@{url.number}" />

										<antcall target="test">
											<param name="com.mysql.jdbc.testsuite.url" value="${com.mysql.jdbc.testsuite.url.@{url.number}}" />
											<param name="test.result.prefix" value="/${test.multi.junitOut.@{url.number}}" />
											<param name="com.mysql.jdbc.testsuite.jvm" value="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"/>
										</antcall>
									</then>
								</if>
							</sequential>
						</for>
					</then>
				</if>
			</sequential>
		</for>
	</target>

	<target name="-set-test-result-prefix" unless="${test.result.prefix}">
		<property name="test.result.prefix" value=""/>
	</target>

	<target name="test" depends="compile, -set-test-result-prefix">
		<property name="com.mysql.jdbc.testsuite.jvm" value="java"/>
		<mkdir dir="${junit.results}"/>
		<echo message="Running unit tests against ${com.mysql.jdbc.testsuite.url} with jvm ${com.mysql.jdbc.testsuite.jvm}"/>

		<property name="junit.unitregress.results" value="${junit.results}/${test.result.prefix}/unitregress" />

		<mkdir dir="${junit.results}/${test.result.prefix}"/>
		<mkdir dir="${junit.unitregress.results}"/>

		<mkdir dir="${junit.unitregress.results}/report"/>

		<junit printSummary="yes" 
			fork="${com.mysql.jdbc.junit.fork}" 
			forkmode="once"
			jvm="${com.mysql.jdbc.testsuite.jvm}"
			errorProperty="tests.failed"
			failureProperty="tests.failed">
			<jvmarg value="-Xmx384m" />

			<!-- For java.sql.SavePoint on old JVMs -->

			<jvmarg value="-Xverify:none" />

			<sysproperty key="com.mysql.jdbc.testsuite.url" value="${com.mysql.jdbc.testsuite.url}"/>

			<classpath>
				<fileset dir="${sourceDir}/lib-nodist">
					<include name="**/*.jar"/>
				</fileset>
				<fileset dir="${buildDir}/${fullProdName}/lib">
					<include name="**/*.jar"/>
				</fileset>
				<pathelement location="${buildDir}/${fullProdName}" />
				<pathelement path="${java.class.path}" />
			</classpath>

			<formatter type="xml"/>

			<test if="test" name="${test}" todir="${junit.unitregress.results}" />
			
			<batchtest unless="test" todir="${junit.unitregress.results}" >
				<fileset dir="${buildDir}/${fullProdName}">
					<include name="**/*Test.java" />
					<exclude name="**/perf/*.java"/>
					<exclude name="**/jdbc4/*Test.java"/>
				</fileset>
			</batchtest>
		</junit>


		<junit printSummary="yes" 
		            fork="${com.mysql.jdbc.junit.fork}" 
		            forkmode="once"
		            jvm="${com.mysql.jdbc.java6.java}"
		            errorProperty="tests.failed"
		            failureProperty="tests.failed">
			<jvmarg value="-Xmx384m" />

			<sysproperty key="com.mysql.jdbc.testsuite.url" value="${com.mysql.jdbc.testsuite.url}"/>

			<classpath>
				<fileset dir="${sourceDir}/lib-nodist">
					<include name="**/*.jar"/>
				</fileset>
				<fileset dir="${buildDir}/${fullProdName}/lib">
					<include name="**/*.jar"/>
				</fileset>
				<pathelement location="${buildDir}/${fullProdName}" />
				<pathelement path="${java.class.path}" />
			</classpath>

			<formatter type="xml"/>

			<batchtest unless="test" todir="${junit.unitregress.results}" >
				<fileset dir="${buildDir}/${fullProdName}">
					<include name="**/jdbc4/*Test.java" />
				</fileset>
			</batchtest>
		</junit>


		<junitreport todir="${junit.unitregress.results}/report">
			<fileset dir="${junit.unitregress.results}">
				<include name="**/TEST-*.xml"/>
			</fileset>
			<report format="frames" todir="${junit.unitregress.results}/report"/>
		</junitreport>

		<!-- Don't fail the build if we're doing multi-tests -->
		<if>
			<equals arg1="${test.result.prefix}" arg2="" />
			<then>
				<fail message="Tests failed. Check logs and/or reports in ${junit.results}." if="tests.failed"/>
			</then>
			<else>
				<echo message="Not checking test failures because we're doing a multi-test..." />
			</else>
		</if>

	</target>

	<!-- Runs compliance testsuite against multiple JVMs and server configs -->

	<target name="test-compliance-multijvm" depends="compile">
		<for list="1,2,3,4,5,6,7,8" param="jvm.number">
			<sequential>
				<if>
					<isset property="com.mysql.jdbc.testsuite.jvm.@{jvm.number}"/>
					<then>
						<for list="1,2,3,4,5,6,7,8" param="url.number">
							<sequential>
								<if>
									<isset property="com.mysql.jdbc.compliance.url.@{url.number}"/>
									<then>
										<make-output-hier 
											jdbcUrl="${com.mysql.jdbc.compliance.url.@{url.number}}" 
											junitOutput="${junit.results}"
											jvm="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}" 
											unitOrCompliance="compliance"/>

										<property name="test.compliance.multi.junitOut.@{url.number}" value="eraseMe" />
										<var name="test.compliance.multi.junitOut.@{url.number}" unset="true" />

										<loadfile srcfile="${junit.results}/hier" property="test.compliance.multi.junitOut.@{url.number}" />

										<antcall target="test-compliance">
											<param name="com.mysql.jdbc.compliance.url" value="${com.mysql.jdbc.compliance.url.@{url.number}}"/>
											<param name="com.mysql.jdbc.testsuite.jvm" value="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"/>
											<param name="test.result.prefix" value="/${test.compliance.multi.junitOut.@{url.number}}"/>
										</antcall>
									</then>
								</if>
							</sequential>
						</for>
					</then>
				</if>
			</sequential>
		</for>
	</target>

	<!-- 
	
		Tests for JDBC compliance. The JDBC compliance testsuite
	    is not shipped with MySQL Connector/J as it is not licensible
	    except from Sun.
	     
	    The properties com.mysql.jdbc.compliance.url and
	    jdbc-compliance-location must be set
	    prior to running this test. 
	     
	-->

	<target name="test-compliance" depends="compile">
		<property name="com.mysql.jdbc.test.jvm" value="java"/>
		<mkdir dir="${junit.results}"/>
		<echo message="Running compliance tests against ${com.mysql.jdbc.compliance.url} with jvm ${com.mysql.jdbc.testsuite.jvm}"/>

		<property name="junit.compliance.results" 
			value="${junit.results}/${test.result.prefix}/compliance"/>

		<mkdir dir="${junit.results}/${test.result.prefix}"/>
		<mkdir dir="${junit.compliance.results}"/>
		<mkdir dir="${junit.compliance.results}/report"/>

		<junit fork="${com.mysql.jdbc.junit.fork}" forkmode="once"
		    printsummary="yes" jvm="${com.mysql.jdbc.testsuite.jvm}"
			errorProperty="tests.compliance.failed"
			failureProperty="tests.compliance.failed">
			<jvmarg value="-Xmx128m"/>

			<!-- For java.sql.SavePoint on old JVMs -->

			<jvmarg value="-Xverify:none"/>

			<sysproperty key="com.mysql.jdbc.compliance.url" value="${com.mysql.jdbc.compliance.url}"/>

			<classpath>
				<pathelement location="${buildDir}/${fullProdName}"/>
				<fileset dir="${sourceDir}/lib-nodist">
					<include name="**/*.jar"/>
				</fileset>
				<fileset dir="${buildDir}/${fullProdName}/lib">
					<include name="**/*.jar"/>
				</fileset>
				<pathelement path="${java.class.path}" />
				<pathelement location="${jdbc-compliance-location}"/>
			</classpath>

			<formatter type="xml"/>

			<test todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.BatchUpdateTest"/>
			<test todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.ConnectionTest"/>
			<test todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.DatabaseMetaDataTest"/>
			<test todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.EscapeSyntaxTest"/>
			<test todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.PreparedStatementTest"/>
			<test todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.ResultSetMetadataTest"/>
			<test todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.ResultSetTest"/>
			<test todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.StatementTest"/>
		</junit>

		<junitreport todir="${junit.compliance.results}/report">
			<fileset dir="${junit.compliance.results}">
				<include name="**/TEST-*.xml"/>
			</fileset>
			<report format="frames" todir="${junit.compliance.results}/report"/>
		</junitreport>

		<!-- Don't fail the build if we're doing multi-tests -->
		<if>
			<equals arg1="${test.result.prefix}" arg2="" />
			<then>
				<fail message="Tests failed. Check logs and/or reports in ${junit.compliance.results}." if="tests.compliance.failed"/>
			</then>
			<else>
				<echo message="Not checking test failures because we're doing a multi-test..." />
			</else>
		</if>

	</target>


	<target name="compile" depends="init, compile-driver, compile-testsuite, compile.integration">
	</target>

	<!-- Compiles the driver itself -->

	<target name="compile-driver" depends="compile-driver-jdbc3, compile-driver-jdbc4" />

	<target name="compile-driver-jdbc3" depends="init, -clean-output">
		<javac sourcepath="" srcdir="${buildDir}/${fullProdName}" 
			destdir="${compiler.output}" 
			deprecation="off" 
			debug="${debug.enable}">
			<include name="**/*.java" />
			<exclude name="testsuite/**" />
			<exclude name="com/mysql/jdbc/integration/**" />
			<exclude name="com/mysql/jdbc/log/Log4JLogger.java" />
			<exclude name="**/JDBC4*.java" />
			<exclude name="com/mysql/jdbc/exceptions/jdbc4/*" />

			<classpath refid="project.build.classpath" />
		</javac>
	</target>

	<target name="compile-driver-jdbc4" depends="compile-driver-jdbc3">

		<javac destdir="${compiler.output}" 
			deprecation="off" 
			debug="${debug.enable}"
			fork="yes"
			executable="${com.mysql.jdbc.java6.javac}"
			compiler="modern"
			sourcepath="" srcdir="${buildDir}/${fullProdName}"
			bootclasspath="${com.mysql.jdbc.java6.rtjar}">
			<include name="**/JDBC4*.java" />
			<include name="com/mysql/jdbc/exceptions/jdbc4/*" />

			<classpath refid="project.build.classpath" />
		</javac>

	</target>

	<!-- Compiles integration 'helpers' for third-party software -->
	<target name="compile.integration" 
		depends="compile-driver, 
				 compile-integration-c3p0, 
		         compile-integration-jboss,
				 compile-integration-log4j"/>

	<target name="compile-integration-c3p0" 
		depends="compile-driver"
		if="com.mysql.jdbc.c3p0Present">
		<javac srcdir="${buildDir}/${fullProdName}" 
				destdir="${compiler.output}" 
				deprecation="off" 
				debug="${debug.enable}" 
				includes="com/mysql/jdbc/integration/c3p0/**">
			<classpath refid="project.build.classpath" />
		</javac>
	</target>

	<target name="compile-integration-jboss" 
			depends="compile-driver"
			if="com.mysql.jdbc.jbossPresent">
		<javac srcdir="${buildDir}/${fullProdName}" 
					destdir="${compiler.output}" 
					deprecation="off" 
					debug="${debug.enable}" 
					includes="com/mysql/jdbc/integration/jboss/**">
			<classpath refid="project.build.classpath" />
		</javac>
	</target>

	<target name="compile-integration-log4j" 
			depends="compile-driver"
			if="com.mysql.jdbc.log4jPresent">
		<javac srcdir="${buildDir}/${fullProdName}" 
				destdir="${compiler.output}" 
				deprecation="off" 
				debug="${debug.enable}" 
				includes="com/mysql/jdbc/log/Log4JLogger.java">
			<classpath refid="project.build.classpath" />
		</javac>
	</target>

	<!-- Compiles the JUnit testsuite -->

	<target name="compile-testsuite" depends="init, compile-driver">
		<javac 
			srcdir="${buildDir}/${fullProdName}" 
			destdir="${compiler.output}" 
			deprecation="off" 
			debug="${debug.enable}"
			includes="testsuite/**"
			excludes="testsuite/requiresNonRedists/**, testsuite/**/jdbc4/**">
			<classpath refid="project.build.classpath"/>
		</javac>

		<javac destdir="${compiler.output}" 
					deprecation="off" 
					debug="${debug.enable}"
					fork="yes"
					executable="${com.mysql.jdbc.java6.javac}"
					compiler="modern"
					sourcepath="" srcdir="${buildDir}/${fullProdName}"
					bootclasspath="${com.mysql.jdbc.java6.rtjar}">
			<include name="testsuite/**/jdbc4/**" />

			<classpath refid="project.build.classpath" />
		</javac>
	</target>

	<target name="real-clean">
		<delete dir="${buildDir}"/>
		<delete>
			<fileset dir="${distDir}" 
				includes="${fullProdName}.zip,${fullProdName}.tar.gz"/>
		</delete>
	</target>

	<target name="clean" unless="com.mysql.jdbc.noCleanBetweenCompiles">
		<delete dir="${buildDir}"/>
	</target>

	<target name="-clean-output" unless="com.mysql.jdbc.noCleanBetweenCompiles">
		<delete>
			<fileset dir="${buildDir}" 
						includes="**/*.class"/>
		</delete>
	</target>

	<target name="docs-generate-dynamic-docs" 
		depends="docs-generate-properties-table, docs-generate-error-mapping-table"/>

	<target name="docs-generate-properties-table" depends="compile-driver">
		<tempfile property="properties-xml" suffix=".xml" />

		<java classname="com.mysql.jdbc.util.PropertiesDocGenerator"
			output="${properties-xml}" classpath="${buildDir}/${fullProdName}"/>
		<tempfile property="docsPropXslTempfile" suffix="xsl"/>
		<copy file="${buildDir}/${fullProdName}/doc/sources/connPropsToDocbook.xsl" tofile="${docsPropXslTempfile}"/>

		<style in="${properties-xml}" style="${docsPropXslTempfile}"
		       out="${buildDir}/${fullProdName}/docs/sources/connPropsDocBook.xml"/>
		<delete file="${properties-xml}"/>
		<delete file="${docsPropXslTempfile}"/>
	</target>

	<target name="docs-generate-error-mapping-table" depends="compile-driver">
		<tempfile property="errorsMapping-xml" suffix=".xml" />

		<java classname="com.mysql.jdbc.util.ErrorMappingsDocGenerator"
				output="${errorsMapping-xml}" classpath="${buildDir}/${fullProdName}"/>
		<tempfile property="docsErrorXslTempfile" suffix="xsl"/>
		<copy file="${buildDir}/${fullProdName}/doc/sources/errorMapToDocbook.xsl" tofile="${docsErrorXslTempfile}"/>

		<style in="${errorsMapping-xml}" style="${docsErrorXslTempfile}"
			       out="${buildDir}/${fullProdName}/docs/sources/errorMappingDocBook.xml"/>
		<delete file="${docsErrorXslTempfile}"/>
	</target>

	<!-- 
	     Targets below this point are for code coverage and depend on
	     the 'Emma' project which you can download from 
	     http://emma.sourceforge.net/
	-->

	<target name="emma" description="turns on EMMA instrumentation/reporting" >
		<!-- directory that contains emma.jar and emma_ant.jar: -->
		<property name="emma.dir" value="${sourceDir}/lib-coverage" />

		<path id="emma.lib" >
			<pathelement location="${emma.dir}/emma.jar" />
			<pathelement location="${emma.dir}/emma_ant.jar" />
		</path>

		<taskdef resource="emma_ant.properties" classpathref="emma.lib" />

		<property name="emma.enabled" value="true" />
		<property name="emma.coverage.dir" value="${buildDir}/${fullProdName}-coverage" />
	</target>

	<target name="instrument" depends="init, compile" 
		description="runs the examples" >

		<emma enabled="${emma.enabled}" >
			<instr instrpathref="built.driver.only.classpath"
	             destdir="${compiler.output}"	
	             metadatafile="${emma.coverage.dir}/metadata.emma"
	             merge="true"
	      		 mode="overwrite">
				<filter excludes="*Test*" />
				<filter excludes="org.junit.*" />
			</instr>
		</emma>

	</target>

	<target name="test-emma-report" depends="test-coverage, test-coverage-compliance">
		<emma enabled="${emma.enabled}" >
			<report sourcepath="${buildDir}/${fullProdName}" >
				<fileset dir="${emma.coverage.dir}" >
					<include name="*.emma" />
				</fileset>

				<txt outfile="${emma.coverage.dir}/coverage.txt" />
				<html outfile="${emma.coverage.dir}/coverage.html" />
			</report>
		</emma>
	</target>

	<target name="test-coverage-all-report" depends="test-coverage-multijvm, test-coverage-compliance-multijvm">
		<emma enabled="${emma.enabled}" >
			<report sourcepath="${buildDir}/${fullProdName}" >
				<fileset dir="${emma.coverage.dir}" >
					<include name="*.emma" />
				</fileset>

				<txt outfile="${emma.coverage.dir}/coverage.txt" />
				<html outfile="${emma.coverage.dir}/coverage.html" />
			</report>
		</emma>
	</target>


	<target name="test-coverage" depends="instrument">
		<property name="com.mysql.jdbc.testsuite.jvm" value="java"/>
		<mkdir dir="${junit.results}"/>
		<echo message="Running unit tests against ${com.mysql.jdbc.testsuite.url} with jvm ${com.mysql.jdbc.testsuite.jvm}"/>

		<property name="junit.unitregress.results" value="${junit.results}/${test.result.prefix}/unitregress" />

		<mkdir dir="${junit.results}/${test.result.prefix}"/>
		<mkdir dir="${junit.unitregress.results}"/>

		<mkdir dir="${junit.unitregress.results}/report"/>

		<junit printSummary="yes" fork="${com.mysql.jdbc.junit.fork}" jvm="${com.mysql.jdbc.testsuite.jvm}">
			<jvmarg value="-Xmx128m" />
			<jvmarg value="-Xverify:none" />
			<!-- For java.sql.SavePoint on old JVMs -->
			<jvmarg value="-Demma.coverage.out.file=${emma.coverage.dir}/coverage.emma" />
			<jvmarg value="-Demma.coverage.out.merge=true" />
			<sysproperty key="com.mysql.jdbc.testsuite.url" value="${com.mysql.jdbc.testsuite.url}"/>
			<classpath>
				<fileset dir="${sourceDir}/lib-nodist">
					<include name="**/*.jar"/>
				</fileset>
				<fileset dir="${buildDir}/${fullProdName}/lib">
					<include name="**/*.jar"/>
				</fileset>
				<pathelement location="${buildDir}/${fullProdName}" />
				<pathelement path="${java.class.path}" />
				<pathelement location="${emma.dir}/emma.jar" />
				<pathelement location="${emma.dir}/emma_ant.jar" />
			</classpath>

			<formatter type="xml"/>

			<batchtest fork="yes" todir="${junit.unitregress.results}">
				<fileset dir="${buildDir}/${fullProdName}">
					<include name="**/*Test.java" />
					<exclude name="**/perf/*.java"/>
				</fileset>
			</batchtest>
		</junit>


		<junitreport todir="${junit.unitregress.results}/report">
			<fileset dir="${junit.unitregress.results}">
				<include name="**/TEST-*.xml"/>
			</fileset>
			<report format="frames" todir="${junit.unitregress.results}/report"/>
		</junitreport>
	</target>

	<target name="test-coverage-compliance" depends="instrument">
		<property name="com.mysql.jdbc.test.jvm" value="java"/>
		<mkdir dir="${junit.results}"/>
		<echo message="Running compliance tests against ${com.mysql.jdbc.compliance.url} with jvm ${com.mysql.jdbc.testsuite.jvm}"/>

		<property name="junit.compliance.results" 
			value="${junit.results}/${test.result.prefix}/compliance"/>

		<mkdir dir="${junit.results}/${test.result.prefix}"/>
		<mkdir dir="${junit.compliance.results}"/>
		<mkdir dir="${junit.compliance.results}/report"/>

		<junit printsummary="yes" jvm="${com.mysql.jdbc.testsuite.jvm}">
			<jvmarg value="-Xmx128m"/>
			<jvmarg value="-Xverify:none"/>
			<!-- For java.sql.SavePoint on old JVMs -->
			<jvmarg value="-Demma.coverage.out.file=${emma.coverage.dir}/coverage.emma" />
			<jvmarg value="-Demma.coverage.out.merge=true" />
			<sysproperty key="com.mysql.jdbc.compliance.url" value="${com.mysql.jdbc.compliance.url}"/>
			<classpath>
				<pathelement location="${buildDir}/${fullProdName}"/>
				<fileset dir="${sourceDir}/lib-nodist">
					<include name="**/*.jar"/>
				</fileset>
				<fileset dir="${buildDir}/${fullProdName}/lib">
					<include name="**/*.jar"/>
				</fileset>
				<pathelement path="${java.class.path}" />
				<pathelement location="${jdbc-compliance-location}"/>
				<pathelement location="${emma.dir}/emma.jar" />
				<pathelement location="${emma.dir}/emma_ant.jar" />
			</classpath>

			<formatter type="xml"/>


			<test fork="yes" todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.BatchUpdateTest"/>
			<test fork="yes" todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.ConnectionTest"/>
			<test fork="yes" todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.DatabaseMetaDataTest"/>
			<test fork="yes" todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.EscapeSyntaxTest"/>
			<test fork="yes" todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.PreparedStatementTest"/>
			<test fork="yes" todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.ResultSetMetadataTest"/>
			<test fork="yes" todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.ResultSetTest"/>
			<test fork="yes" todir="${junit.compliance.results}" 
		    		name="com.mysql.jdbc.compliance.tests.StatementTest"/>
		</junit>

		<junitreport todir="${junit.compliance.results}/report">
			<fileset dir="${junit.compliance.results}">
				<include name="**/TEST-*.xml"/>
			</fileset>
			<report format="frames" todir="${junit.compliance.results}/report"/>
		</junitreport>
	</target>

	<!-- Makes output directory hierarchy based on MySQL server version,
	     os information and jvm version -->

	<macrodef name="make-output-hier">
		<attribute name="jvm" />
		<attribute name="jdbcUrl" />
		<attribute name="unitOrCompliance" />
		<attribute name="junitOutput" />
		<sequential>
			<java fork="true" jvm="@{jvm}" classname="com.mysql.jdbc.util.VersionFSHierarchyMaker">

				<jvmarg value="-Xmx128m" />
				<jvmarg value="-Xverify:none" />
				<!-- For java.sql.SavePoint on old JVMs -->
				<jvmarg value="-Demma.coverage.out.file=${emma.coverage.dir}/coverage.emma" />
				<jvmarg value="-Demma.coverage.out.merge=true" />

				<sysproperty key="com.mysql.jdbc.testsuite.url" value="@{jdbcUrl}" />

				<classpath>
					<fileset dir="${sourceDir}/lib-nodist">
						<include name="**/*.jar" />
					</fileset>
					<fileset dir="${buildDir}/${fullProdName}/lib">
						<include name="**/*.jar" />
					</fileset>
					<pathelement location="${buildDir}/${fullProdName}" />
					<pathelement path="${java.class.path}" />
					<pathelement location="${emma.dir}/emma.jar" />
					<pathelement location="${emma.dir}/emma_ant.jar" />
				</classpath>
				<arg line="@{unitOrCompliance} @{junitOutput} @{junitOutput}/hier" />
			</java>
		</sequential>
	</macrodef>

	<!-- Runs compliance testsuite against multiple JVMs and 
	     server configs, and produces coverage reports -->

	<target name="test-coverage-multijvm" depends="instrument">
		<for list="1,2,3,4,5,6,7,8" param="jvm.number">
			<sequential>
				<if>
					<isset property="com.mysql.jdbc.testsuite.jvm.@{jvm.number}"/>
					<then>
						<for list="1,2,3,4,5,6,7,8" param="url.number">
							<sequential>
								<if>
									<isset property="com.mysql.jdbc.testsuite.url.@{url.number}"/>
									<then>
										<make-output-hier 
										jdbcUrl="${com.mysql.jdbc.testsuite.url.@{url.number}}" 
										junitOutput="${junit.results}" 
										jvm="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}" 
										unitOrCompliance="unit" />

										<property name="test.coverage.multi.junitOut.@{url.number}" value="eraseMe" />
										<var name="test.coverage.multi.junitOut.@{url.number}" unset="true" />

										<loadfile srcfile="${junit.results}/hier" 
										property="test.coverage.multi.junitOut.@{url.number}" />

										<antcall target="test-coverage">
											<param name="com.mysql.jdbc.testsuite.url" value="${com.mysql.jdbc.testsuite.url.@{url.number}}" />
											<param name="test.result.prefix" value="/${test.coverage.multi.junitOut.@{url.number}}" />
											<param name="com.mysql.jdbc.testsuite.jvm" value="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"/>
										</antcall>
									</then>
								</if>
							</sequential>
						</for>
					</then>
				</if>
			</sequential>
		</for>
	</target>

	<!-- Runs compliance testsuite against multiple JVMs and server configs, collecting
	       coverage data -->

	<target name="test-coverage-compliance-multijvm" depends="instrument">
		<for list="1,2,3,4,5,6,7,8" param="jvm.number"  xmlns:ac="antlib:net.sf.antcontrib">
			<sequential>
				<if>
					<isset property="com.mysql.jdbc.testsuite.jvm.@{jvm.number}"/>
					<then>
						<for list="1,2,3,4,5,6,7,8" param="url.number">
							<sequential>
								<if>
									<isset property="com.mysql.jdbc.compliance.url.@{url.number}"/>
									<then>
										<make-output-hier 
											jdbcUrl="${com.mysql.jdbc.compliance.url.@{url.number}}" 
											junitOutput="${junit.results}"
											jvm="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}" 
											unitOrCompliance="compliance"/>

										<property name="test.coverage.compliance.multi.junitOut.@{url.number}" value="eraseMe" />
										<var name="test.coverage.compliance.multi.junitOut.@{url.number}" unset="true" />

										<loadfile srcfile="${junit.results}/hier" property="test.coverage.compliance.multi.junitOut.@{url.number}" />

										<antcall target="test-coverage-compliance">
											<param name="com.mysql.jdbc.compliance.url" value="${com.mysql.jdbc.compliance.url.@{url.number}}"/>
											<param name="com.mysql.jdbc.testsuite.jvm" value="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"/>
											<param name="test.result.prefix" value="/${test.coverage.compliance.multi.junitOut.@{url.number}}"/>
										</antcall>
									</then>
								</if>
							</sequential>
						</for>
					</then>
				</if>
			</sequential>
		</for>
	</target>

	<!-- Builds and installs the driver jar into the local maven repository -->

	<target name="install" depends="full-package">
		<exec executable="mvn" osfamily="unix" failonerror="true" failifexecutionfails="true">
			<arg line="install:install-file 
				-Dfile=${buildDir}/mysql-connector-java-${full.version}/mysql-connector-java-${full.version}-bin.jar
				-DgroupId=mysql -DartifactId=mysql-connector-java -Dversion=${full.version}
				-Dpackaging=jar -DgeneratePom=true" />
		</exec>
	</target>

</project>
